package com.promise.jokerdream.utils

import java.net.URLDecoder
import java.nio.charset.StandardCharsets

/**
 * URL修复工具类
 * 用于修复各种URL格式问题
 */
object UrlFixer {
    
    /**
     * 修复URL
     * @param originalUrl 原始URL
     * @return 修复后的URL
     */
    fun fixUrl(originalUrl: String): String {
        if (originalUrl.isBlank()) {
            return originalUrl
        }
        
        var fixedUrl = originalUrl.trim()
        
        // 1. 处理HTML实体编码
        fixedUrl = decodeHtmlEntities(fixedUrl)
        
        // 2. 确保URL有协议前缀
        fixedUrl = ensureProtocol(fixedUrl)

        return fixedUrl
    }
    
    /**
     * 解码HTML实体
     * @param url 包含HTML实体的URL
     * @return 解码后的URL
     */
    private fun decodeHtmlEntities(url: String): String {
        return url
            .replace("&amp;", "&")
            .replace("&lt;", "<")
            .replace("&gt;", ">")
            .replace("&quot;", "\"")
            .replace("&#39;", "'")
            .replace("&nbsp;", " ")
    }
    
    /**
     * 确保URL有协议前缀
     * @param url 可能缺少协议的URL
     * @return 带有协议前缀的URL
     */
    private fun ensureProtocol(url: String): String {
        return when {
            url.startsWith("http://") || url.startsWith("https://") -> url
            url.startsWith("//") -> "https:$url"
            else -> "https://$url"
        }
    }
    
    /**
     * 验证URL是否有效
     * @param url 要验证的URL
     * @return 是否为有效URL
     */
    fun isValidUrl(url: String): Boolean {
        return try {
            java.net.URL(url)
            true
        } catch (e: Exception) {
            false
        }
    }
}
